import java.net.*;
public class c5p2a {
private ServerSocket ssocket; // do nasluchu (for listening)
private int port; // nr portu (port number)
public c5p2a(int aport) throws IOException {
port = aport;
// utworzenie gniazda nasluchu
// i powiazanie go z portem (bind)
// creation of "listen" socket and binding with port
ssocket = new ServerSocket(port);
}
public void startListening() {
Socket socket = null; // dla jednego klienta (for one client)
int ivalue;
String svalue;
double dvalue;
try {
// czekaj na polaczenie (wait for connection)
socket = ssocket.accept();
// pobierz strumienie i nadbuduj
// na nich "lepsze" strumienie
// (receive straems and build "better" streams)
DataInputStream dis = new DataInputStream(
socket.getInputStream());
DataOutputStream dos = new DataOutputStream(
socket.getOutputStream());
// czytaj kolejno int, String i double (read: int, string, double)
ivalue = dis.readInt();
svalue = dis.readUTF();
dvalue = dis.readDouble();
// wypisz co odebrano (print what was received)
System.out.println("Odebrano (received):");
System.out.println(ivalue);
System.out.println(svalue);
System.out.println(dvalue);
// odpisz klientowi
dos.writeUTF("ODEBRANO POPRAWNIE (received correctly)");
// zamknij strumienie (close streams)
dis.close();
dos.close();
// zamknij gniazdo (close sockets)
socket.close();
// zamknij gniazdo nasluchujace (close listening socket)
ssocket.close();
// jesli cos pojdzie zle, wypisz
// stos wywolan
// if anything goes wrong, print stack trace
} catch (Exception e) {
e.printStackTrace();
return;
}
}
// args[0] - numer portu (port number)
public static void main(String[] args) {
if (args.length < 1) {
System.out.println(
"Podaj numer portu (provide port number)"
);
return;
}
try {
// ustal port
int port = Integer.parseInt(args[0]);
c5p2a server = new c5p2a(port);
System.out.println("Czekam (I am waiting)...");
server.startListening();
// moze byc albo wyjatek z konstruktora
// c5p2a albo z Integer.parseInt jesli parametr
// nie jest liczba
// possible exception if paremeter Integer.parseInt is not a number
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("Serwer zakonczyl dzialanie (server finished).");
}
}